home *** CD-ROM | disk | FTP | other *** search
/ Game.EXE 2001 January / Game.EXE_01_2001.iso / demos / Blade of Darkness / data1.cab / Program_Executable_Files / Lib / Objects.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2000-11-16  |  18.0 KB  |  419 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 1.5)
  3.  
  4. import Bladex
  5. import InitDataField
  6. import B3DLib
  7. import GameStateAux
  8. import pdb
  9. import ObjStore
  10. REL = 0
  11. ABS = 1
  12.  
  13. def DisplaceAndRotateObjectFunc(obj_name, time):
  14.     obj = Bladex.GetEntity(obj_name)
  15.     dinobj = obj.Data.dinobjdata
  16.     if dinobj.OnMovement == 0 and dinobj.OnRotation == 0:
  17.         obj.RemoveFromList(dinobj.Timer)
  18.         obj.TimerFunc = ''
  19.         return None
  20.     
  21.     if dinobj.OnMovement == 1:
  22.         if time < dinobj.end_time:
  23.             itime = time - dinobj.last_time
  24.             dinobj.displ = dinobj.init_vel * itime + dinobj.acc * itime ** 2 / 2.0
  25.             x = dinobj.displ_vector[0] * dinobj.displ
  26.             y = dinobj.displ_vector[1] * dinobj.displ
  27.             z = dinobj.displ_vector[2] * dinobj.displ
  28.             obj.Move(x, y, z)
  29.             iend_vel = dinobj.init_vel + dinobj.acc * itime
  30.             dinobj.init_vel = iend_vel
  31.             dinobj.last_time = time
  32.             if dinobj.while_displ_sound:
  33.                 dinobj.while_displ_sound.Position = dinobj.obj.Position
  34.             
  35.             if dinobj.WhileDisplFunc:
  36.                 apply(dinobj.WhileDisplFunc, dinobj.WhileDisplArgs)
  37.             
  38.         else:
  39.             itime = dinobj.end_time - dinobj.last_time
  40.             dinobj.displ = dinobj.init_vel * itime + dinobj.acc * itime ** 2 / 2.0
  41.             x = dinobj.displ_vector[0] * dinobj.displ
  42.             y = dinobj.displ_vector[1] * dinobj.displ
  43.             z = dinobj.displ_vector[2] * dinobj.displ
  44.             obj.Move(x, y, z)
  45.             dinobj.OnMovement = 0
  46.             if dinobj.while_displ_sound and dinobj.while_displ_sound != dinobj.next_while_displ_sound or dinobj.last_displ:
  47.                 dinobj.while_displ_sound.StopSound()
  48.             
  49.             if dinobj.end_displ_sound:
  50.                 dinobj.end_displ_sound.Position = dinobj.obj.Position
  51.                 dinobj.end_displ_sound.PlaySound(0)
  52.             
  53.             if dinobj.OnRotation == 0:
  54.                 obj.RemoveFromList(dinobj.Timer)
  55.                 obj.TimerFunc = ''
  56.             
  57.             if dinobj.EndDisplFunc:
  58.                 apply(dinobj.EndDisplFunc, dinobj.EndDisplArgs)
  59.             
  60.     
  61.     if dinobj.OnRotation == 1:
  62.         if time < dinobj.end_time_w:
  63.             itime = time - dinobj.last_time_w
  64.             dinobj.angle = dinobj.init_w * itime + dinobj.acc_w * itime ** 2 / 2.0
  65.             ce = dinobj.center
  66.             ax = dinobj.axis
  67.             if dinobj.rotation_type == REL:
  68.                 obj.RotateRel(ce[0], ce[1], ce[2], ax[0], ax[1], ax[2], dinobj.angle)
  69.             else:
  70.                 obj.RotateAbs(ce[0], ce[1], ce[2], ax[0], ax[1], ax[2], dinobj.angle)
  71.             iend_w = dinobj.init_w + dinobj.acc_w * itime
  72.             dinobj.init_w = iend_w
  73.             dinobj.last_time_w = time
  74.             if dinobj.while_rot_sound:
  75.                 dinobj.while_rot_sound.Position = dinobj.obj.Position
  76.             
  77.             if dinobj.WhileRotFunc:
  78.                 apply(dinobj.WhileRotFunc, dinobj.WhileRotArgs)
  79.             
  80.         else:
  81.             itime = dinobj.end_time_w - dinobj.last_time_w
  82.             dinobj.angle = dinobj.init_w * itime + dinobj.acc_w * itime ** 2 / 2.0
  83.             ce = dinobj.center
  84.             ax = dinobj.axis
  85.             if dinobj.rotation_type == REL:
  86.                 obj.RotateRel(ce[0], ce[1], ce[2], ax[0], ax[1], ax[2], dinobj.angle)
  87.             else:
  88.                 obj.RotateAbs(ce[0], ce[1], ce[2], ax[0], ax[1], ax[2], dinobj.angle)
  89.             dinobj.OnRotation = 0
  90.             if dinobj.while_rot_sound and dinobj.while_rot_sound != dinobj.next_while_rot_sound or dinobj.last_rot:
  91.                 dinobj.while_rot_sound.StopSound()
  92.             
  93.             if dinobj.end_rot_sound:
  94.                 dinobj.end_rot_sound.Position = dinobj.obj.Position
  95.                 dinobj.end_rot_sound.PlaySound(0)
  96.             
  97.             if dinobj.OnMovement == 0:
  98.                 obj.RemoveFromList(dinobj.Timer)
  99.                 obj.TimerFunc = ''
  100.             
  101.             if dinobj.EndRotFunc:
  102.                 apply(dinobj.EndRotFunc, dinobj.EndRotArgs)
  103.             
  104.     
  105.  
  106.  
  107. class DinObj:
  108.     ObjId = ''
  109.     Activado = 0
  110.     OnMovement = 0
  111.     OnRotation = 0
  112.     prev_while_displ_sound = None
  113.     while_displ_sound = None
  114.     next_while_displ_sound = None
  115.     end_displ_sound = None
  116.     current_displ = 0
  117.     last_displ = 1
  118.     prev_while_rot_sound = None
  119.     while_rot_sound = None
  120.     next_while_rot_sound = None
  121.     end_rot_sound = None
  122.     last_rot = 1
  123.     Timer = 'Timer60'
  124.     obj = None
  125.     displ_vector = (0, 0, 0)
  126.     displ = 0
  127.     end_time = 0
  128.     last_time = 0
  129.     init_vel = 0
  130.     acc = 0
  131.     init_w = 0
  132.     acc_w = 0
  133.     center = (0, 0, 0)
  134.     axis = (0, 0, 0)
  135.     rotation_type = 0
  136.     end_time_w = 0
  137.     last_time_w = 0
  138.     EndDisplFunc = None
  139.     EndDisplArgs = None
  140.     EndRotFunc = None
  141.     EndRotArgs = None
  142.     WhileDisplFunc = None
  143.     WhileDisplArgs = None
  144.     WhileRotFunc = None
  145.     WhileRotArgs = None
  146.     
  147.     def __init__(self):
  148.         self.ObjId = ObjStore.GetNewId()
  149.         ObjStore.ObjectsStore[self.ObjId] = self
  150.  
  151.     
  152.     def __del__(self):
  153.         del ObjStore.ObjectsStore[self.ObjId]
  154.  
  155.     
  156.     def DisplaceDinObj(self):
  157.         self.OnMovement = 1
  158.         if self.OnRotation == 0:
  159.             self.obj.TimerFunc = DisplaceAndRotateObjectFunc
  160.             self.obj.SubscribeToList(self.Timer)
  161.         
  162.  
  163.     
  164.     def RotateDinObj(self):
  165.         self.OnRotation = 1
  166.         if self.OnMovement == 0:
  167.             self.obj.TimerFunc = DisplaceAndRotateObjectFunc
  168.             self.obj.SubscribeToList(self.Timer)
  169.         
  170.  
  171.     
  172.     def Stop(self):
  173.         self.OnMovement = 0
  174.         self.OnRotation = 0
  175.  
  176.     
  177.     def StopOnStep(self):
  178.         self.EndDisplFunc = None
  179.         self.EndRotFunc = None
  180.  
  181.     
  182.     def StopDisplacement(self):
  183.         self.OnMovement = 0
  184.  
  185.     
  186.     def StopDisplacementOnStep(self):
  187.         self.EndDisplFunc = None
  188.  
  189.     
  190.     def StopRotation(self):
  191.         self.OnRotation = 0
  192.  
  193.     
  194.     def StopRotationOnStep(self):
  195.         self.EndRotFunc = None
  196.  
  197.     
  198.     def persistent_id(self):
  199.         return self.ObjId
  200.  
  201.     
  202.     def __getstate__(self):
  203.         return (1, self.ObjId, self.Activado, self.OnMovement, self.OnRotation, GameStateAux.SaveEntityAux(self.prev_while_displ_sound), GameStateAux.SaveEntityAux(self.while_displ_sound), GameStateAux.SaveEntityAux(self.next_while_displ_sound), self.last_displ, GameStateAux.SaveEntityAux(self.prev_while_rot_sound), GameStateAux.SaveEntityAux(self.while_rot_sound), GameStateAux.SaveEntityAux(self.next_while_rot_sound), self.last_rot, self.Timer, GameStateAux.SaveEntityAux(self.obj), self.displ_vector, self.displ, self.end_time, self.last_time, self.init_vel, self.acc, self.init_w, self.acc_w, self.center, self.axis, self.rotation_type, self.end_time_w, self.last_time_w, GameStateAux.SaveFunctionAux(self.EndDisplFunc), self.EndDisplArgs, GameStateAux.SaveFunctionAux(self.EndRotFunc), self.EndRotArgs, GameStateAux.SaveFunctionAux(self.WhileDisplFunc), self.WhileDisplArgs, GameStateAux.SaveFunctionAux(self.WhileRotFunc), self.WhileRotArgs, GameStateAux.SaveEntityAux(self.end_displ_sound), self.current_displ, GameStateAux.SaveNewMembers(self))
  204.  
  205.     
  206.     def __setstate__(self, parm):
  207.         if parm[0] == 1:
  208.             self.ObjId = parm[1]
  209.             ObjStore.ObjectsStore[self.ObjId] = self
  210.             self.Activado = parm[2]
  211.             self.OnMovement = parm[3]
  212.             self.OnRotation = parm[4]
  213.             self.prev_while_displ_sound = GameStateAux.LoadEntityAux(parm[5])
  214.             self.while_displ_sound = GameStateAux.LoadEntityAux(parm[6])
  215.             self.next_while_displ_sound = GameStateAux.LoadEntityAux(parm[7])
  216.             self.last_displ = parm[8]
  217.             self.prev_while_rot_sound = GameStateAux.LoadEntityAux(parm[9])
  218.             self.while_rot_sound = GameStateAux.LoadEntityAux(parm[10])
  219.             self.next_while_rot_sound = GameStateAux.LoadEntityAux(parm[11])
  220.             self.last_rot = parm[12]
  221.             self.Timer = parm[13]
  222.             self.obj = GameStateAux.LoadEntityAux(parm[14])
  223.             self.displ_vector = parm[15]
  224.             self.displ = parm[16]
  225.             self.end_time = parm[17]
  226.             self.last_time = parm[18]
  227.             self.init_vel = parm[19]
  228.             self.acc = parm[20]
  229.             self.init_w = parm[21]
  230.             self.acc_w = parm[22]
  231.             self.center = parm[23]
  232.             self.axis = parm[24]
  233.             self.rotation_type = parm[25]
  234.             self.end_time_w = parm[26]
  235.             self.last_time_w = parm[27]
  236.             GameStateAux.LoadFunctionAux(parm[28], self, 'EndDisplFunc')
  237.             self.EndDisplArgs = parm[29]
  238.             GameStateAux.LoadFunctionAux(parm[30], self, 'EndRotFunc')
  239.             self.EndRotArgs = parm[31]
  240.             GameStateAux.LoadFunctionAux(parm[32], self, 'WhileDisplFunc')
  241.             self.WhileDisplArgs = parm[33]
  242.             GameStateAux.LoadFunctionAux(parm[34], self, 'WhileRotFunc')
  243.             self.WhileRotArgs = parm[35]
  244.             self.end_displ_sound = GameStateAux.LoadEntityAux(parm[36])
  245.             self.current_displ = parm[37]
  246.             GameStateAux.LoadNewMembers(self, parm[38])
  247.             if self.obj:
  248.                 self.obj.Data = self
  249.             
  250.         else:
  251.             print 'DinObj.__setstate__() -> Version mismatch'
  252.             self.ObjId = ObjStore.GetNewId()
  253.             ObjStore.ObjectsStore[self.ObjId] = self
  254.  
  255.  
  256.  
  257. def DisplaceObject(dinobj, displ, displ_vector, init_vel, end_vel, init_displ_sound = '', while_displ_sound = '', end_displ_sound = '', WhileDisplFunc = '', WhileDisplArgs = (), EndDisplFunc = '', EndDisplArgs = ()):
  258.     dinobj.displ = displ
  259.     dinobj.displ_vector = B3DLib.Normalize(displ_vector)
  260.     dinobj.init_vel = float(init_vel)
  261.     dinobj.init_displ_sound = init_displ_sound
  262.     dinobj.while_displ_sound = while_displ_sound
  263.     dinobj.end_displ_sound = end_displ_sound
  264.     dinobj.WhileDisplFunc = WhileDisplFunc
  265.     dinobj.WhileDisplArgs = WhileDisplArgs
  266.     dinobj.EndDisplFunc = EndDisplFunc
  267.     dinobj.EndDisplArgs = EndDisplArgs
  268.     dinobj.acc = (end_vel ** 2 - init_vel ** 2) / (2.0 * displ)
  269.     if dinobj.acc == 0.0:
  270.         displ_time = displ / float(init_vel)
  271.     else:
  272.         displ_time = (end_vel - init_vel) / dinobj.acc
  273.     if dinobj.init_displ_sound:
  274.         dinobj.init_displ_sound.Position = dinobj.obj.Position
  275.         dinobj.init_displ_sound.PlaySound(0)
  276.     
  277.     if dinobj.while_displ_sound and dinobj.while_displ_sound != dinobj.prev_while_displ_sound:
  278.         dinobj.while_displ_sound.Position = dinobj.obj.Position
  279.         dinobj.while_displ_sound.PlaySound(-1)
  280.     
  281.     start_time = Bladex.GetTime()
  282.     dinobj.last_time = Bladex.GetTime()
  283.     dinobj.end_time = start_time + displ_time
  284.     dinobj.DisplaceDinObj()
  285.  
  286.  
  287. def DisplaceObjectFromTo(dinobj, init_point, end_point, init_vel, end_vel, init_displ_sound = '', while_displ_sound = '', end_displ_sound = '', WhileDisplFunc = '', WhileDisplArgs = (), EndDisplFunc = '', EndDisplArgs = ()):
  288.     displ_vector = (end_point[0] - init_point[0], end_point[1] - init_point[1], end_point[2] - init_point[2])
  289.     displ = (displ_vector[0] ** 2 + displ_vector[1] ** 2 + displ_vector[2] ** 2) ** 0.5
  290.     dinobj.obj.Position = init_point
  291.     DisplaceObject(dinobj, displ, displ_vector, init_vel, end_vel, init_displ_sound, while_displ_sound, end_displ_sound, WhileDisplFunc, WhileDisplArgs, EndDisplFunc, EndDisplArgs)
  292.  
  293.  
  294. def RotateObject(dinobj, angle, init_w, end_w, center, axis, rotation_type = REL, init_rot_sound = '', while_rot_sound = '', end_rot_sound = '', WhileRotFunc = '', WhileRotArgs = (), EndRotFunc = '', EndRotArgs = ()):
  295.     dinobj.angle = angle
  296.     if angle < 0:
  297.         init_w = -init_w
  298.         end_w = -end_w
  299.     
  300.     dinobj.init_w = float(init_w)
  301.     dinobj.center = center
  302.     dinobj.axis = axis
  303.     dinobj.rotation_type = rotation_type
  304.     dinobj.init_rot_sound = init_rot_sound
  305.     dinobj.while_rot_sound = while_rot_sound
  306.     dinobj.end_rot_sound = end_rot_sound
  307.     dinobj.WhileRotFunc = WhileRotFunc
  308.     dinobj.WhileRotArgs = WhileRotArgs
  309.     dinobj.EndRotFunc = EndRotFunc
  310.     dinobj.EndRotArgs = EndRotArgs
  311.     dinobj.acc_w = (end_w ** 2 - init_w ** 2) / (2.0 * angle)
  312.     if dinobj.acc_w == 0.0:
  313.         rotat_time = angle / float(init_w)
  314.     else:
  315.         rotat_time = (end_w - init_w) / dinobj.acc_w
  316.     if dinobj.init_rot_sound:
  317.         dinobj.init_rot_sound.Position = dinobj.obj.Position
  318.         dinobj.init_rot_sound.PlaySound(0)
  319.     
  320.     if dinobj.while_rot_sound and dinobj.while_rot_sound != dinobj.prev_while_rot_sound:
  321.         dinobj.while_rot_sound.Position = dinobj.obj.Position
  322.         dinobj.while_rot_sound.PlaySound(-1)
  323.     
  324.     start_time = Bladex.GetTime()
  325.     dinobj.last_time_w = Bladex.GetTime()
  326.     dinobj.end_time_w = start_time + rotat_time
  327.     dinobj.RotateDinObj()
  328.  
  329.  
  330. def NDisplacement(dinobj, displ, displ_vector, init_vel, end_vel, init_displ_sound, while_displ_sound, end_displ_sound):
  331.     dinobj.currentdispl = dinobj.currentdispl + 1
  332.     n = dinobj.currentdispl
  333.     dinobj.prev_while_displ_sound = while_displ_sound[n - 1]
  334.     if n < dinobj.ndispl - 1:
  335.         dinobj.next_while_displ_sound = while_displ_sound[n + 1]
  336.         DisplaceObject(dinobj, displ[n], displ_vector[n], init_vel[n], end_vel[n], init_displ_sound[n], while_displ_sound[n], end_displ_sound[n], dinobj.WhileDisplFunc, dinobj.WhileDisplArgs, NDisplacement, (dinobj, displ, displ_vector, init_vel, end_vel, init_displ_sound, while_displ_sound, end_displ_sound))
  337.     else:
  338.         dinobj.next_while_displ_sound = ''
  339.         dinobj.last_displ = 1
  340.         DisplaceObject(dinobj, displ[n], displ_vector[n], init_vel[n], end_vel[n], init_displ_sound[n], while_displ_sound[n], end_displ_sound[n], dinobj.WhileDisplFunc, dinobj.WhileDisplArgs, dinobj.EndNDisplFunc, dinobj.EndNDisplArgs)
  341.  
  342.  
  343. def NDisplaceObject(dinobj, displ, displ_vector, init_vel, end_vel, init_displ_soundlist = (), while_displ_soundlist = (), end_displ_soundlist = (), WhileDisplFunc = '', WhileDisplArgs = (), EndDisplFunc = '', EndDisplArgs = ()):
  344.     init_displ_sound = []
  345.     while_displ_sound = []
  346.     end_displ_sound = []
  347.     for n in range(len(displ)):
  348.         init_displ_sound.append('')
  349.         while_displ_sound.append('')
  350.         end_displ_sound.append('')
  351.     
  352.     for n in range(len(init_displ_soundlist)):
  353.         init_displ_sound[n] = init_displ_soundlist[n]
  354.     
  355.     for n in range(len(while_displ_soundlist)):
  356.         while_displ_sound[n] = while_displ_soundlist[n]
  357.     
  358.     for n in range(len(end_displ_soundlist)):
  359.         end_displ_sound[n] = end_displ_soundlist[n]
  360.     
  361.     dinobj.EndNDisplFunc = EndDisplFunc
  362.     dinobj.EndNDisplArgs = EndDisplArgs
  363.     dinobj.ndispl = len(displ)
  364.     dinobj.currentdispl = 0
  365.     dinobj.prev_while_displ_sound = ''
  366.     dinobj.next_while_displ_sound = while_displ_sound[1]
  367.     dinobj.last_displ = 0
  368.     DisplaceObject(dinobj, displ[0], displ_vector[0], init_vel[0], end_vel[0], init_displ_sound[0], while_displ_sound[0], end_displ_sound[0], WhileDisplFunc, WhileDisplArgs, NDisplacement, (dinobj, displ, displ_vector, init_vel, end_vel, init_displ_sound, while_displ_sound, end_displ_sound))
  369.  
  370.  
  371. def NRotation(dinobj, angle, init_w, end_w, center, axis, init_rot_sound, while_rot_sound, end_rot_sound):
  372.     dinobj.currentangle = dinobj.currentangle + 1
  373.     n = dinobj.currentangle
  374.     dinobj.prev_while_rot_sound = while_rot_sound[n - 1]
  375.     if n < dinobj.nangle - 1:
  376.         dinobj.next_while_rot_sound = while_rot_sound[n + 1]
  377.         RotateObject(dinobj, angle[n], init_w[n], end_w[n], center[n], axis[n], dinobj.rotation_type, init_rot_sound[n], while_rot_sound[n], end_rot_sound[n], dinobj.WhileRotFunc, dinobj.WhileRotArgs, NRotation, (dinobj, angle, init_w, end_w, center, axis, init_rot_sound, while_rot_sound, end_rot_sound))
  378.     else:
  379.         dinobj.next_while_rot_sound = ''
  380.         dinobj.last_rot = 1
  381.         RotateObject(dinobj, angle[n], init_w[n], end_w[n], center[n], axis[n], dinobj.rotation_type, init_rot_sound[n], while_rot_sound[n], end_rot_sound[n], dinobj.WhileRotFunc, dinobj.WhileRotArgs, dinobj.EndNRotFunc, dinobj.EndNRotArgs)
  382.  
  383.  
  384. def NRotateObject(dinobj, angle, init_w, end_w, center, axis, rotation_type = REL, init_rot_soundlist = (), while_rot_soundlist = (), end_rot_soundlist = (), WhileRotFunc = '', WhileRotArgs = (), EndRotFunc = '', EndRotArgs = ()):
  385.     init_rot_sound = []
  386.     while_rot_sound = []
  387.     end_rot_sound = []
  388.     for n in range(len(angle)):
  389.         init_rot_sound.append('')
  390.         while_rot_sound.append('')
  391.         end_rot_sound.append('')
  392.     
  393.     for n in range(len(init_rot_soundlist)):
  394.         init_rot_sound[n] = init_rot_soundlist[n]
  395.     
  396.     for n in range(len(while_rot_soundlist)):
  397.         while_rot_sound[n] = while_rot_soundlist[n]
  398.     
  399.     for n in range(len(end_rot_soundlist)):
  400.         end_rot_sound[n] = end_rot_soundlist[n]
  401.     
  402.     dinobj.EndNRotFunc = EndRotFunc
  403.     dinobj.EndNRotArgs = EndRotArgs
  404.     dinobj.nangle = len(angle)
  405.     dinobj.currentangle = 0
  406.     dinobj.prev_while_rot_sound = ''
  407.     dinobj.next_while_rot_sound = while_rot_sound[1]
  408.     dinobj.last_rot = 0
  409.     RotateObject(dinobj, angle[0], init_w[0], end_w[0], center[0], axis[0], rotation_type, init_rot_sound[0], while_rot_sound[0], end_rot_sound[0], WhileRotFunc, WhileRotArgs, NRotation, (dinobj, angle, init_w, end_w, center, axis, init_rot_sound, while_rot_sound, end_rot_sound))
  410.  
  411.  
  412. def CreateDinamicObject(obj_name):
  413.     dinobj = DinObj()
  414.     dinobj.obj = Bladex.GetEntity(obj_name)
  415.     InitDataField.Initialise(dinobj.obj)
  416.     dinobj.obj.Data.dinobjdata = dinobj
  417.     return dinobj
  418.  
  419.